#include <stdio.h>
#include <string.h>

/**
 * @brief fgets()函数会将输入的\n符号也进行保留,这个函数为了弥补fgets函数的缺陷,把末尾的\n替换成\0结尾
 * 
 * @param str 输入的字符串的指针
 * @param n 输入的取值,利用fgets函数的第二个参数实现
 * @return char* 字字符串的地址值
 */
char *s_gets(char *str, int n)
{
    char *return_val;
    int count = 0;

    return_val = fgets(str, n, stdin);

    if (return_val) //到这里return_val不是NULL,代表fgets()成功获取到了字符串,进行\n的替换
    {
        while (*str != '\n' && *str != '\0')
        {
            str++; //进行下一个字符的判断
            if (*str == '\n')
            {
                *str = '\0';
            }
            else        //这个else必须要想到
            { //将剩余的留在缓冲区的字符排除
                while (getchar() != '\n')
                {
                    continue;
                }
            }
        }

        // 可以使用string.h中定义的strchr()函数查找最近的值
        // char *addr;
        // addr = strchr(str, '\n');
        // if (addr)
        // {
        //     *addr = '\0';
        // }else{
        //      while (getchar() != '\n')
        //      {
        //            continue;
        //      }
        // }
    }
    return return_val;
}

int main()
{
    char string1[40] = "This is a test String!";
    putchar(string1);

    s_gets(string1, 5);
    putchar(string1);

    return 0;
}